「MahGen」日本麻将牌画生成工具

您所在的位置:网站首页 麻将 五万 「MahGen」日本麻将牌画生成工具

「MahGen」日本麻将牌画生成工具

2023-10-21 10:22| 来源: 网络整理| 查看: 265

MahGen 是一个为给定的日本麻将牌型生成对应牌画的工具。MahGen 是 Mahjong Generator 的缩写。

你可以在下面这个网站体验它:

https://mahgen.ericlab.cc/

这个网站使用 GitHub Pages 部署,访问不便的话也可以使用下面这个国内的镜像:

https://eric200203.gitee.io/mahgen/

在网站中使用工具生成图片后,即可右键点击图片将其复制到剪贴板或者保存到本地供日后使用。本文中的所有牌画图片都是使用 MahGen 生成的。

有兴趣的朋友也可以访问本项目的 GitHub:

https://github.com/eric200203/mahgen

功能与特性

MahGen 支持各种牌型的表示:

基本牌型吃、碰、杠、暗杠等副露各种复杂牌型的组合

网站支持纯文本和交互式界面两种输入方式:

纯文本模式,输入记牌序列生成牌画交互式界面,点击选择牌面和形态加入牌画语法说明

MahGen 的纯文本模式支持通过输入序列生成牌画,序列的语法基本遵循天凤描述牌型的惯例,并在其基础上进行扩展以支持更多的功能。(以下内容也可以在网站中的“语法说明”部分查看)

数牌(饼、索、万)

天凤中使用数字 1-9 描述牌的点数,使用字母 p、s、m 描述牌的类型 饼 Pin、索 So、万 Man。因此,序列 1m2m3m 表示牌型 一万二万三万,5p6p7p 则表示 五饼六饼七饼。特别地,数字 0 表示红宝牌,因此 0p、0s、0m 分别表示 红五饼、红五索、红五万:

1m2m3m:一万二万三万5p6p7p:五饼六饼七饼0p 0s 0m:红五饼 红五索 红五万

为了简化书写,你可以将同一类型的牌的类型描述全部省略,只保留最后一个。例如,你可以将上文中的 1m2m3m 简写为 123m,5p6p7p 简写为 567p。当然,你也可以写作 1m23m 或 12m3m,它们都表示 一万二万三万 这个牌型。

字牌(风牌、三元牌)

天凤使用字母 z 表示字牌,且字牌的顺序为“东南西北白发中”,因此 1z 2z 3z 4z 5z 6z 7z 分别表示 东 南 西 北 白 发 中。

1z2z3z4z5z6z7z:东 南 西 北 白 发 中

在此基础上,我们使用 0z 表示 牌背。例如,我们可以使用 0z11p0z 表示 暗杠一饼:

0z11p0z:暗杠一饼

最后,为了让所有的数字对字牌都有意义,我们使用 8z 和 9z 表示两张并不在日本麻将中出现、但可能有用处的牌: ? 和 *。

8z9z:问号 星号

和数牌一样,字牌也可以简写,例如 3z3z3z 可以简写为 333z。

空格

我们使用 | 在两张牌之间插入 空格,每个空格是 1/7 张牌的宽度。例如:

123p|456s|789m

你可以连续使用多个 | 插入多个连续的空格来控制两张牌之间空格的宽度:

123p||||456s

副露

副露时,麻将牌可能会发生以下三种变化:横置、加杠以及涉及红宝牌的加杠。

横置

我们使用前缀 _ 表示将紧接着的下一张牌横置。例如,我们可以使用 _123m 表示 使用二万和三万吃上家打出的一万:

_123m:吃上家打出的一万

这里有更多的示例:

1_11s:碰对家打出的一索777_7p:杠下家打出的七饼

加杠

我们使用前缀 ^ 表示紧接着的下一张牌是加杠形成的重叠。例如:

77^7z:加杠红中

涉及红宝牌的加杠

我们使用前缀 v 表示紧接着的下一张牌是加杠形成的重叠,且其中有一张牌是红宝牌。我们定义:v0 表示重叠中靠下的牌是红宝牌,靠上的牌是普通数牌;v5 表示重叠中靠下的牌是普通数牌,靠上的牌是红宝牌。例如:

55v5p、5v05s、v555m

总结

MahGen 的语法总结如下:

使用 1-9 描述牌的点数;

使用后缀 p、s、m、z 表示牌的类型:饼、索、万和字牌;

使用 0 表示红宝牌,0z 表示牌背;

使用 | 插入空格;

使用前缀 _ 表示将牌横置,^ 表示加杠,v 表示涉及红宝牌的加杠。

将这些符号组合起来,我们就能够构造出各种各样的牌型,例如:

1m|_123p|5v05m|0z11s0z|66^6z

最后,MahGen 只为给定的序列生成图片,不会对序列是否符合牌理进行检查,因此诸如 _5^50v0m 的序列对 MahGen 而言同样是合法的。

_5^50v0m:很奇怪但是符合语法前段JS前端JS库 和 Hexo插件

(对前端开发没有兴趣盆友可以跳过这一节)

MahGen 还提供了一个 JavaScript 前端库,上述网站实际上就是在这个库的基础上进行的二次开发。关于前端库的详细说明和使用指南,可参见 GitHub 项目 mahgen 的 README:

https://github.com/eric200203/mahgen/blob/master/README.md

此外,对于使用 Hexo 写博客的读者,MahGen 还提供了一个插件,用于在书写博客时使用标签语法直接插入牌画,参见 GitHub 项目 hexo-mahgen:

https://github.com/eric200203/hexo-mahgen

致谢

感谢 black-desk,他的项目 Mahjim 麻将输入法 为本项目提供了灵感。

感谢 最完整的日本麻将中文维基百科(http://wiki.lingshangkaihua.com/),本项目的图片素材来源于这个网站。

欢迎大家访问并使用这个工具,也欢迎大家在评论区提出意见和建议。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3